package com.colin.app.activity.senior.pattern;

import com.colin.app.R;
import com.colin.app.activity.senior.SeniorContract;
import com.colin.app.activity.senior.SeniorPresenterImpl;
import com.colin.app.app.AppActivity;
import com.colin.app.bean.DemoBean;
import com.colin.app.bean.Singleton3;

/**
 * 从Android代码中来记忆23种设计模式
 * 模式能让我们的程序更健壮、更稳定、容易扩展
 * 6个原则:
 * 1 单一职责原则：       单一原则很简单，就是将一组相关性很高的函数、数据封装到一个类中。一个类应该有职责单一
 * 2 开闭原则：           对于扩展是开放的，但是对于修改是封闭的
 * 3 里氏替换原则：       所有引用基类的地方必须能透明地使用其子类对象
 * 4 依赖倒置原则：       使得高层次的模块不依赖于低层次模块的具体实现细节
 * 5 接口隔离原则：       类之间的依赖关系应该建立在最小的接口上。其原则是将非常庞大的、臃肿的接口拆分成更小的更具体的接口
 * 6 迪米特原则：         一个对象应该对其他的对象有最少的了解
 */
public class PatternActivity extends AppActivity implements SeniorContract.SeniorView {
    private SeniorContract.SeniorPresenter mSeniorPresenter = null;

    @Override
    protected void onDestroy() {
        if (null != mSeniorPresenter) {
            mSeniorPresenter.destroy();
            mSeniorPresenter = null;
        }
        super.onDestroy();
    }

    @Override
    public void initPresenter() {
        DemoBean demoBean = getIntent().getExtras().getParcelable("clazz");
        mSeniorPresenter = new SeniorPresenterImpl(this, this, demoBean);
    }

    @Override
    public int initViewLayoutID() {
        return R.layout.activity_pattern;
    }

    @Override
    public void initView() {
        Singleton3 singleton3 = Singleton3.getInstance();
    }

    @Override
    public void initData() {
        mSeniorPresenter.setData();
    }
}
